<?php

class UsuarioController extends Controller {

  private $db;

  public function __construct() {
    parent::__construct();
    $this->db = new UsuarioModel();
  }

  public function index() {
    if(logado())
      if($_SESSION['acesso'] == 'adm')
        $this->view('admHomeView');
      else{
        $dados['user'] = $this->db->query("Call sp_selecionar_usuario({$_SESSION['id']})");
        $dados['user'] = $this->toArray($dados['user']);
        $dados['ideias'] = $this->db->query("CALL sp_selecionar_dados_ideia({$_SESSION['id']});");
        $this->view('userHomeView', $dados);
      }
    else
      $this->loadHome();
  }

  public function login() {
    $this->user($_POST['username'], $_POST['password']);
    $this->loadHome();
  }

  private function user($username, $password) {
    $resultado = $this->db->query("CALL sp_autenticar_usuario('$username', '$password')");
    $resultado = $this->toArray($resultado);
    if (count($resultado) > 0) {
      $_SESSION['id'] = $resultado['pk_int_idUsuario'];
      $_SESSION['nome'] = $resultado['char_nomeUsuario'];
      $_SESSION['acesso'] = $resultado['char_nivelAcesso'];
    }
  }

  public function logout() {
    if (isset($_SESSION['id'])) {
      session_destroy();
      unset($_SESSION);
    }
    $this->loadHome();
  }

  public function alterar() {
    if (logado ()) {
      $resultado = $this->db->query("CALL sp_selecionar_usuario({$_SESSION['id']});");
      $resultado = $this->toArray($resultado);
      $dados['nome'] = $resultado['char_nomeUsuario'];
      $dados['email'] = $resultado['char_emailUsuario'];
      $dados['descricao'] = $resultado['char_descricaoUsuario'];
      $this->view('alterarUsuarioView', $dados);
    }else {
      $this->loadHome();
    }
  }

  public function salvarAlteracoes() {
    $dados['id'] = $_SESSION['id'];
    $dados['nome'] = $_POST['nome'];
    $dados['email'] = $_POST['email'];
    $dados['descricao'] = $_POST['descricao'];
    if($this->validar($dados))
      if (isset($dados['id'])) {
        $this->db->query("CALL sp_atualizar_usuario({$dados['id']}, '{$dados['nome']}', '{$dados['email']}', '{$dados['descricao']}');");
        $dado['msg']['mensagem'] = 'Dados alterados com sucesso!';
        $dado['msg']['type'] = 'sucesso';
       $this->loadHome($dado);
      } else {
        $this->loadHome();
      }
  }

  public function cadastrar() {
    if (!logado() || $_SESSION['acesso'] == 'adm')
      $this->view('cadastrarUsuarioView');
    else
      $this->loadHome();
  }

  public function salvarCadastro() {
    $nome = $_POST['nome'];
    $email = $_POST['email'];
    $senha = $_POST['senha'];
    $usuario = utf8_encode($_POST['usuario']);
    $descricao = $_POST['descricao'];
    $nivel = (isset($_POST['acesso']) && $_SESSION['acesso'] == 'adm')? $_POST['acesso'] : 'user';
    if ($nome != null && $email != null && $senha != null && $usuario != null && $descricao != null) {
      //echo "CALL sp_inserir_usuario('$nome', '$email', '$usuario', '$senha', '$descricao', '$nivel', @a)";
      $this->db->query("CALL sp_inserir_usuario('$nome', '$email', '$usuario', '$senha', '$descricao', '$nivel', @a)");
      $validator = $this->db->query("SELECT @a as validador");
      $validator = $this->toArray($validator);
      if($validator['validador'] == 2) {
        $dado['msg']['mensagem'] = 'Cadastro realizado com sucesso!';
        $dado['msg']['type'] = 'sucesso';
        $this->loadHome($dado);
      }else {
        $dados = array('nome' => $nome, 'email' => $email, 'username' => $usuario, 'descricao' => $descricao);
        $dados['msg']['type'] = 'erro';
        $dados['msg']['mensagem'] = 'Username Indisponivel';
        $this->view('cadastrarUsuarioView', $dados);
      }
    } else {
      $dado['msg']['type'] = 'erro';
      $dado['msg']['mensagem'] = 'Preencha todos os campos!';
      $this->view('cadastrarUsuarioView', $dado);
    }
  }

  public function alterarSenha() {
    if (logado ()) {
      $this->view('alterarSenhaView');
    }else {
      $this->view('homeView');
    }

  }

  public function salvarSenha() {
    if (logado ()) {
      $senha_atual = $_POST['senha_atual'];
      $nova_senha = $_POST['nova_senha'];
      $this->db->query("CALL sp_atualizar_senha({$_SESSION['id']}, '{$senha_atual}', '{$nova_senha}', @a)");
      $validator = $this->db->query("SELECT @a as validador");
      $validator = $this->toArray($validator);
      if($validator['validador'] == 1) {
        $dado['msg']['type'] = 'sucesso';
        $dado['msg']['mensagem'] = 'Alteração realizada com sucesso';
        $this->loadHome($dado);
      }else {
        $dado['msg']['type'] = 'erro';
        $dado['msg']['mensagem'] = 'Senha Atual não confere';
        $this->view('alterarSenhaView', $dado);
      }
    }
  }

}

?>
